Link aggregation or trunking enables the connection of two networked devices, such as network devices, computers, end stations, etc., by grouping multiple physical network links between the devices into a single logical link. For example, administrators of a network aggregate several Ethernet links together into a trunk or a link aggregation group (LAG) as defined in the IEEE 802.3ad standards. By setting up a LAG based on these standards, the network appears to run on a single Media Access Controller (MAC) that distributes and load balances the Ethernet packets among the group of links in the LAG.
A LAG may be used to provide load balancing between two network devices to achieve even distribution of the network load across the member links. One method of load balancing used today is based on Internet Protocol (IP) header source and destination addresses. Other methods may be based on attributes such as MAC source and destination addresses, Layer 4 source and destination port, and/or ingress port and specific hash functions.
In typical networks, the load may not be divided equally among the links of a LAG. Based on the network traffic, certain load balancing algorithms may be better suited than others and an incorrect load balancing algorithm can result in dropped frames on one port and little utilization on another port of the same LAG. The imbalance can cause degradation of application performance for flows going across a LAG link and/or result in some ports being over-utilized and others being under-utilized.